package it.unibo.deis.lia.location;

/**
 * <p>Descrizione: la classe BasicServiceSetIdentifier cattura il concetto di BSSID descritto nello standard IEEE 802.11 </p>
 * <p>Copyright: Copyright (c) 2002</p>
 * @author Marco Bevilacqua
 * @version 1.0
 */

public class BasicServiceSetIdentifierOld extends NamedLocationOss {

	private static final long serialVersionUID = 1L;

/**
  * @param bssid MAC address di un Access Point.
  * <p>bssid deve essere una stringa di 12 caratteri compatibile al formato MAC address; in particolare
  * i caratteri in essa contenuti possono essere: a-f,A-F e 0-9. </p>
  * <p>Esempio: 0047b9c012A8 </p>
  * @exception WirelessException se il parametro in ingresso non � compatibile con il formato MAC address.
  */
  public BasicServiceSetIdentifierOld(final String bssid) throws WirelessException {
	super(bssid);
    /* L'argomento passato in ingresso deve essere compatibile con il formato MAC Address. */

    /* Il MAC address non deve essere key sensitive. */
    String s = bssid.toLowerCase();
    if (bssid.length()!=12) {
      throw new WirelessException("BSSID non compatibile con il formato MAC addrees");
    }

    char curChar;
    for (int index=0;index<12;index++) {
      curChar = s.charAt(index);
      if(!(((curChar >= 'a')&&(curChar <= 'f'))||(curChar >= '0')&&(curChar <= '9'))) {
        throw new WirelessException("BSSID non compatibile con il formato MAC addrees");
      }
    }
	
  }
  
  // Carlo
  public BasicServiceSetIdentifierOld(String bssid,String rssi) throws WirelessException {
	super(bssid,rssi);
    
  	/* L'argomento passato in ingresso deve essere compatibile con il formato MAC Address. */

    /* Il MAC address non deve essere key sensitive. */
    String s = bssid.toLowerCase();
    if (bssid.length()!=12) {
      throw new WirelessException("BSSID non compatibile con il formato MAC addrees");
    }

    char curChar;
    for (int index=0;index<12;index++) {
      curChar = s.charAt(index);
      if(!(((curChar >= 'a')&&(curChar <= 'f'))||(curChar >= '0')&&(curChar <= '9'))) {
        throw new WirelessException("BSSID non compatibile con il formato MAC addrees");
      }
    }
  }
  
  public String toColonFormat() {

    char[] formatoDuePunti = new char[17];
    int index = 0;
    for(int i=0;i<12;i++){
      formatoDuePunti[index++] = getId().charAt(i);
      if ((i%2 == 1)&&(i!=11)) {
        formatoDuePunti[index++] = ':';
      }
    }
    return new String(formatoDuePunti);
  }

  public int hashCode() {
    return getId().hashCode();
  }
}